package org.example.xsda.vo;

import lombok.Data;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 学生个人档案VO
 */
@Data
public class StudentProfileVO {
    
    // ========== 基本信息 ==========
    /** 学生ID */
    private Long studentId;
    
    /** 学号 */
    private String studentNo;
    
    /** 真实姓名 */
    private String realName;
    
    /** 头像URL（来自sys_user表）*/
    private String avatar;
    
    /** 证件照URL（学生专属）*/
    private String idPhoto;
    
    /** 性别：1男 2女 */
    private Integer gender;
    
    /** 性别文本 */
    private String genderText;
    
    /** 出生日期 */
    private LocalDate birthday;
    
    /** 年龄 */
    private Integer age;
    
    /** 联系电话 */
    private String phone;
    
    /** 家庭住址 */
    private String address;
    
    // ========== 学籍信息 ==========
    /** 院系ID */
    private Long deptId;
    
    /** 院系名称 */
    private String deptName;
    
    /** 班级ID */
    private Long classId;
    
    /** 班级名称 */
    private String className;
    
    /** 班主任姓名 */
    private String headTeacherName;
    
    /** 入学日期 */
    private LocalDate enrollDate;
    
    /** 入学年份 */
    private Integer enrollYear;
    
    /** 学籍状态：1在籍 2休学 3毕业 4退学 */
    private Integer status;
    
    /** 学籍状态文本 */
    private String statusText;
    
    /** 备注 */
    private String remark;
    
    // ========== 账号信息 ==========
    /** 用户ID */
    private Long userId;
    
    /** 用户名（登录账号）*/
    private String username;
    
    /** 角色名称 */
    private String roleName;
    
    /** 账号状态 */
    private Integer accountStatus;
    
    // ========== 统计信息 ==========
    /** 总学分 */
    private Double totalCredits;
    
    /** 平均分 */
    private Double averageScore;
    
    /** 已修课程数 */
    private Integer courseCount;
    
    /** 奖惩记录数 */
    private Integer recordCount;
    
    /** 待审批申请数 */
    private Integer pendingApprovalCount;
    
    // ========== 最近成绩列表（前5条）==========
    private List<RecentScore> recentScores;
    
    // ========== 最近档案记录（前5条）==========
    private List<RecentRecord> recentRecords;
    
    // ========== 内部类 ==========
    @Data
    public static class RecentScore {
        private String courseName;
        private Double score;
        private Double credit;
        private String semester;
        private LocalDateTime createTime;
    }
    
    @Data
    public static class RecentRecord {
        private String recordType;
        private String content;
        private LocalDateTime createTime;
    }
}

